home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Beta / Quicktime 2.0 Beta.iso / Programming Stuff / Interfaces / Universal Interfaces / ADSP.h next >
Encoding:
C/C++ Source or Header  |  1994-01-30  |  12.0 KB  |  366 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        ADSP.h
  3.  
  4.     Copyright:    Â© 1984-1993 by Apple Computer, Inc., all rights reserved.
  5.  
  6.     WARNING
  7.     This file was auto generated by the interfacer tool. Modifications
  8.     must be made to the master file.
  9.  
  10. */
  11.  
  12. #ifndef __ADSP__
  13. #define __ADSP__
  14.  
  15. #ifndef __APPLETALK__
  16. #include <AppleTalk.h>
  17. /*    #include <Types.h>                                            */
  18. /*        #include <ConditionalMacros.h>                            */
  19. /*        #include <MixedMode.h>                                    */
  20. /*            #include <Traps.h>                                    */
  21. /*    #include <OSUtils.h>                                        */
  22. #endif
  23.  
  24. enum  {
  25. /* driver control ioResults */
  26.     errRefNum                    = -1280,                        /* bad connection refNum */
  27.     errAborted                    = -1279,                        /* control call was aborted */
  28.     errState                    = -1278,                        /* bad connection state for this operation */
  29.     errOpening                    = -1277,                        /* open connection request failed */
  30.     errAttention                = -1276,                        /* attention message too long */
  31.     errFwdReset                    = -1275,                        /* read terminated by forward reset */
  32.     errDSPQueueSize                = -1274,                        /* DSP Read/Write Queue Too small */
  33.     errOpenDenied                = -1273,                        /* open connection request was denied */
  34. /*driver control csCodes*/
  35.     dspInit                        = 255,                            /* create a new connection end */
  36.     dspRemove                    = 254,                            /* remove a connection end */
  37.     dspOpen                        = 253,                            /* open a connection */
  38.     dspClose                    = 252,                            /* close a connection */
  39.     dspCLInit                    = 251,                            /* create a connection listener */
  40.     dspCLRemove                    = 250,                            /* remove a connection listener */
  41.     dspCLListen                    = 249,                            /* post a listener request */
  42.     dspCLDeny                    = 248,                            /* deny an open connection request */
  43.     dspStatus                    = 247,                            /* get status of connection end */
  44.     dspRead                        = 246,                            /* read data from the connection */
  45.     dspWrite                    = 245,                            /* write data on the connection */
  46.     dspAttention                = 244                            /* send an attention message */
  47. };
  48.  
  49. enum  {
  50.     dspOptions                    = 243,                            /* set connection end options */
  51.     dspReset                    = 242,                            /* forward reset the connection */
  52.     dspNewCID                    = 241,                            /* generate a cid for a connection end */
  53. /* connection opening modes */
  54.     ocRequest                    = 1,                            /* request a connection with remote */
  55.     ocPassive                    = 2,                            /* wait for a connection request from remote */
  56.     ocAccept                    = 3,                            /* accept request as delivered by listener */
  57.     ocEstablish                    = 4,                            /* consider connection to be open */
  58. /* connection end states */
  59.     sListening                    = 1,                            /* for connection listeners */
  60.     sPassive                    = 2,                            /* waiting for a connection request from remote */
  61.     sOpening                    = 3,                            /* requesting a connection with remote */
  62.     sOpen                        = 4,                            /* connection is open */
  63.     sClosing                    = 5,                            /* connection is being torn down */
  64.     sClosed                        = 6,                            /* connection end state is closed */
  65. /* client event flags */
  66.     eClosed                        = 0x80,                            /* received connection closed advice */
  67.     eTearDown                    = 0x40,                            /* connection closed due to broken connection */
  68.     eAttention                    = 0x20,                            /* received attention message */
  69.     eFwdReset                    = 0x10,                            /* received forward reset advice */
  70. /* miscellaneous constants */
  71.     attnBufSize                    = 570,                            /* size of client attention buffer */
  72.     minDSPQueueSize                = 100                            /* Minimum size of receive or send Queue */
  73. };
  74.  
  75.  
  76. /* connection control block */
  77.  
  78. #if defined(powerc) || defined (__powerc)
  79. #pragma options align=mac68k
  80. #endif
  81. struct TRCCB {
  82.     unsigned char                *ccbLink;                        /* link to next ccb */
  83.     unsigned short                refNum;                            /* user reference number */
  84.     unsigned short                state;                            /* state of the connection end */
  85.     unsigned char                userFlags;                        /* flags for unsolicited connection events */
  86.     unsigned char                localSocket;                    /* socket number of this connection end */
  87.     AddrBlock                    remoteAddress;                    /* internet address of remote end */
  88.     unsigned short                attnCode;                        /* attention code received */
  89.     unsigned short                attnSize;                        /* size of received attention data */
  90.     unsigned char                *attnPtr;                        /* ptr to received attention data */
  91.     unsigned char                reserved[220];                    /* for adsp internal use */
  92. };
  93. #if defined(powerc) || defined(__powerc)
  94. #pragma options align=reset
  95. #endif
  96.  
  97. typedef struct TRCCB TRCCB;
  98.  
  99. typedef TRCCB *TPCCB;
  100.  
  101.  
  102. /*
  103.     ADSPConnectionEventProcPtr’s cannot be written in or called from a 
  104.     high-level language without the help of mixed mode or assembly glue
  105.     because they use the following parameter-passing convention:
  106.  
  107.     typedef pascal void (*ADSPConnectionEventProcPtr)(TPCCB sourceCCB);
  108.     
  109.         In:
  110.             =>     sourceCCB        A1.L
  111.         Out:
  112.             none
  113. */
  114.  
  115. enum  {
  116.     uppADSPConnectionEventProcInfo = kRegisterBased|REGISTER_ROUTINE_PARAMETER(1,kRegisterA1,kFourByteCode)
  117. };
  118.  
  119. #if USESROUTINEDESCRIPTORS
  120. typedef pascal void (*ADSPConnectionEventProcPtr)(TPCCB sourceCCB);
  121.  
  122. typedef UniversalProcPtr ADSPConnectionEventUPP;
  123.  
  124. #define CallADSPConnectionEventProc(userRoutine, sourceCCB)  \
  125.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppADSPConnectionEventProcInfo, (sourceCCB))
  126.  
  127. #define NewADSPConnectionEventProc(userRoutine)  \
  128.     (ADSPConnectionEventUPP) NewRoutineDescriptor((ProcPtr)(userRoutine),  \
  129.     uppADSPConnectionEventProcInfo, GetCurrentISA())
  130.  
  131. #else
  132. typedef ProcPtr ADSPConnectionEventUPP;
  133.  
  134. #define NewADSPConnectionEventProc(userRoutine)  \
  135.     (ADSPConnectionEventUPP)((userRoutine))
  136.  
  137. #endif
  138.  
  139.  
  140. /* init connection end parameters */
  141.  
  142. #if defined(powerc) || defined (__powerc)
  143. #pragma options align=mac68k
  144. #endif
  145. struct TRinitParams {
  146.     TPCCB                        ccbPtr;                            /* pointer to connection control block */
  147.     ADSPConnectionEventUPP        userRoutine;                    /* client routine to call on event */
  148.     unsigned short                sendQSize;                        /* size of send queue (0..64K bytes) */
  149.     unsigned char                *sendQueue;                        /* client passed send queue buffer */
  150.     unsigned short                recvQSize;                        /* size of receive queue (0..64K bytes) */
  151.     unsigned char                *recvQueue;                        /* client passed receive queue buffer */
  152.     unsigned char                *attnPtr;                        /* client passed receive attention buffer */
  153.     unsigned char                localSocket;                    /* local socket number */
  154. };
  155. #if defined(powerc) || defined(__powerc)
  156. #pragma options align=reset
  157. #endif
  158.  
  159. typedef struct TRinitParams TRinitParams;
  160.  
  161.  
  162. /* open connection parameters */
  163.  
  164. #if defined(powerc) || defined (__powerc)
  165. #pragma options align=mac68k
  166. #endif
  167. struct TRopenParams {
  168.     unsigned short                localCID;                        /* local connection id */
  169.     unsigned short                remoteCID;                        /* remote connection id */
  170.     AddrBlock                    remoteAddress;                    /* address of remote end */
  171.     AddrBlock                    filterAddress;                    /* address filter */
  172.     unsigned long                sendSeq;                        /* local send sequence number */
  173.     unsigned short                sendWindow;                        /* send window size */
  174.     unsigned long                recvSeq;                        /* receive sequence number */
  175.     unsigned long                attnSendSeq;                    /* attention send sequence number */
  176.     unsigned long                attnRecvSeq;                    /* attention receive sequence number */
  177.     unsigned char                ocMode;                            /* open connection mode */
  178.     unsigned char                ocInterval;                        /* open connection request retry interval */
  179.     unsigned char                ocMaximum;                        /* open connection request retry maximum */
  180. };
  181. #if defined(powerc) || defined(__powerc)
  182. #pragma options align=reset
  183. #endif
  184.  
  185. typedef struct TRopenParams TRopenParams;
  186.  
  187.  
  188. /* close connection parameters */
  189.  
  190. #if defined(powerc) || defined (__powerc)
  191. #pragma options align=mac68k
  192. #endif
  193. struct TRcloseParams {
  194.     unsigned char                abort;                            /* abort connection immediately if non-zero */
  195. };
  196. #if defined(powerc) || defined(__powerc)
  197. #pragma options align=reset
  198. #endif
  199.  
  200. typedef struct TRcloseParams TRcloseParams;
  201.  
  202.  
  203. /* client status parameter block */
  204.  
  205. #if defined(powerc) || defined (__powerc)
  206. #pragma options align=mac68k
  207. #endif
  208. struct TRstatusParams {
  209.     TPCCB                        ccbPtr;                            /* pointer to ccb */
  210.     unsigned short                sendQPending;                    /* pending bytes in send queue */
  211.     unsigned short                sendQFree;                        /* available buffer space in send queue */
  212.     unsigned short                recvQPending;                    /* pending bytes in receive queue */
  213.     unsigned short                recvQFree;                        /* available buffer space in receive queue */
  214. };
  215. #if defined(powerc) || defined(__powerc)
  216. #pragma options align=reset
  217. #endif
  218.  
  219. typedef struct TRstatusParams TRstatusParams;
  220.  
  221.  
  222. /* read/write parameter block */
  223.  
  224. #if defined(powerc) || defined (__powerc)
  225. #pragma options align=mac68k
  226. #endif
  227. struct TRioParams {
  228.     unsigned short                reqCount;                        /* requested number of bytes */
  229.     unsigned short                actCount;                        /* actual number of bytes */
  230.     unsigned char                *dataPtr;                        /* pointer to data buffer */
  231.     unsigned char                eom;                            /* indicates logical end of message */
  232.     unsigned char                flush;                            /* send data now */
  233. };
  234. #if defined(powerc) || defined(__powerc)
  235. #pragma options align=reset
  236. #endif
  237.  
  238. typedef struct TRioParams TRioParams;
  239.  
  240.  
  241. /* attention parameter block */
  242.  
  243. #if defined(powerc) || defined (__powerc)
  244. #pragma options align=mac68k
  245. #endif
  246. struct TRattnParams {
  247.     unsigned short                attnCode;                        /* client attention code */
  248.     unsigned short                attnSize;                        /* size of attention data */
  249.     unsigned char                *attnData;                        /* pointer to attention data */
  250.     unsigned char                attnInterval;                    /* retransmit timer in 10-tick intervals */
  251. };
  252. #if defined(powerc) || defined(__powerc)
  253. #pragma options align=reset
  254. #endif
  255.  
  256. typedef struct TRattnParams TRattnParams;
  257.  
  258.  
  259. /* client send option parameter block */
  260.  
  261. #if defined(powerc) || defined (__powerc)
  262. #pragma options align=mac68k
  263. #endif
  264. struct TRoptionParams {
  265.     unsigned short                sendBlocking;                    /* quantum for data packets */
  266.     unsigned char                sendTimer;                        /* send timer in 10-tick intervals */
  267.     unsigned char                rtmtTimer;                        /* retransmit timer in 10-tick intervals */
  268.     unsigned char                badSeqMax;                        /* threshold for sending retransmit advice */
  269.     unsigned char                useCheckSum;                    /* use ddp packet checksum */
  270. };
  271. #if defined(powerc) || defined(__powerc)
  272. #pragma options align=reset
  273. #endif
  274.  
  275. typedef struct TRoptionParams TRoptionParams;
  276.  
  277.  
  278. /* new cid parameters */
  279.  
  280. #if defined(powerc) || defined (__powerc)
  281. #pragma options align=mac68k
  282. #endif
  283. struct TRnewcidParams {
  284.     unsigned short                newcid;                            /* new connection id returned */
  285. };
  286. #if defined(powerc) || defined(__powerc)
  287. #pragma options align=reset
  288. #endif
  289.  
  290. typedef struct TRnewcidParams TRnewcidParams;
  291.  
  292. typedef struct DSPParamBlock DSPParamBlock, *DSPPBPtr;
  293.  
  294.  
  295. /*
  296.     ADSPCompletionProcs cannot be written in or called from a high-level
  297.     language without the help of mixed mode or assembly glue because they 
  298.     use the following parameter-passing convention:
  299.  
  300.     typedef pascal void (*ADSPCompletionProcPtr)(DSPPBPtr thePBPtr);
  301.         In:
  302.             =>     thePBPtr        A0.L
  303.         Out:
  304.             none
  305. */
  306.  
  307. enum  {
  308.     uppADSPCompletionProcInfo    = kRegisterBased|REGISTER_ROUTINE_PARAMETER(1,kRegisterA0,kFourByteCode)
  309. };
  310.  
  311. #if USESROUTINEDESCRIPTORS
  312. typedef pascal void (*ADSPCompletionProcPtr)(DSPPBPtr thePBPtr);
  313.  
  314. typedef UniversalProcPtr ADSPCompletionUPP;
  315.  
  316. #define CallADSPCompletionProc(userRoutine, thePBPtr)  \
  317.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppADSPCompletionProcInfo, (thePBPtr))
  318.  
  319. #define NewADSPCompletionProc(userRoutine)  \
  320.     (ADSPCompletionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppADSPCompletionProcInfo, GetCurrentISA())
  321.  
  322. #else
  323. typedef ProcPtr ADSPCompletionUPP;
  324.  
  325. #define NewADSPCompletionProc(userRoutine)  \
  326.     (ADSPCompletionUPP)((userRoutine))
  327.  
  328. #endif
  329.  
  330.  
  331. /* ADSP CntrlParam ioQElement , driver control call parameter block*/
  332.  
  333. #if defined(powerc) || defined (__powerc)
  334. #pragma options align=mac68k
  335. #endif
  336. struct DSPParamBlock {
  337.     struct QElem                *qLink;
  338.     short                        qType;
  339.     short                        ioTrap;
  340.     Ptr                            ioCmdAddr;
  341.     ADSPCompletionUPP            ioCompletion;
  342.     OSErr                        ioResult;
  343.     char                        *ioNamePtr;
  344.     short                        ioVRefNum;
  345.     short                        ioCRefNum;                        /* adsp driver refNum */
  346.     short                        csCode;                            /* adsp driver control code */
  347.     long                        qStatus;                        /* adsp internal use */
  348.     short                        ccbRefNum;
  349.     union {
  350.         TRinitParams                initParams;                    /*dspInit, dspCLInit*/
  351.         TRopenParams                openParams;                    /*dspOpen, dspCLListen, dspCLDeny*/
  352.         TRcloseParams                closeParams;                /*dspClose, dspRemove*/
  353.         TRioParams                    ioParams;                    /*dspRead, dspWrite*/
  354.         TRattnParams                attnParams;                    /*dspAttention*/
  355.         TRstatusParams                statusParams;                /*dspStatus*/
  356.         TRoptionParams                optionParams;                /*dspOptions*/
  357.         TRnewcidParams                newCIDParams;                /*dspNewCID*/
  358.     }                            u;
  359. };
  360. #if defined(powerc) || defined(__powerc)
  361. #pragma options align=reset
  362. #endif
  363.  
  364. #endif
  365.  
  366.